The invention is related to the field of data processing systems employing networked storage.
In the field of data processing, it is known to use so-called networked storage systems in which data storage devices are coupled to host computer systems by storage-oriented networks. The storage-oriented networks may include specialized storage devices such as high-speed switches or routers, as well as specialized storage controllers which provide access to data storage resources (e.g., magnetic disks or other storage media) that are housed in separate storage systems. The networked approach to data storage can provide a number of benefits, including enhanced modularity and scalability.
In networked storage systems, it is typical to provide redundancy for greater availability. Redundancy can be provided by employing multiple independent storage controllers with independent paths to the storage systems housing the storage media. The storage controllers may operate in a so-called active-active fashion such that the storage resources can be accessed via any of the storage controllers at any time, providing both increased performance due to concurrent access as well as improved availability by virtue of the redundancy.
Techniques have been used by which a host computer or other initiator of storage commands selects from among multiple available paths or storage controllers by which a given volume of storage can be accessed. Known techniques have included algorithms for distributing requests among multiple storage controllers by a so-called round-robin method, for example, in which successive storage commands are sent to successive ones of a set of storage controllers. Other techniques have incorporated additional criteria to address performance considerations, such as distributing commands according to a measure of relative loading of multiple available paths/controllers.
It has also been known to employ caching in storage controllers. By use of a relatively high-speed cache along with prefetching, many storage commands can be satisfied out of the cache rather than requiring access to relatively slow storage devices. When caches are employed it is necessary to use a mechanism for maintaining a coherent view of the data stored in the data system from the perspective of all users of the data. A cache coherence protocol is typically employed to move data among multiple caches and to coordinate the access to the data in a coherency-maintaining fashion.